function Get-DscBaseObject
{
    Param( 
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)]
        [PSObject] 
        $SourceObject,

        [Parameter(Mandatory=$false,ValueFromPipeline=$false)]
        [PSObject] 
        $ServerDefinition

    )
    Process
    {
        #Get Standard properties
        if (-not $ServerDefinition) {$server = Get-Server -CurrentObject $sourceObject}
        else {$server = $ServerDefinition}
        #$DeploymentTarget = Get-DeploymentTarget -CurrentObject $server
        $ensure = Get-EnsureStatus -CurrentObject $sourceObject
        $uniqueKey = Resolve-FullQualifiedUniqueKey -CurrentObject $sourceObject

        #Create the new object model
        $targetObject = New-Object PsObject
        $targetObject | Add-Member -MemberType NoteProperty -Name UniqueKey -Value $uniqueKey
        $targetObject | Add-Member -MemberType NoteProperty -Name Server -Value $server.HostName
        #$targetObject | Add-Member -MemberType NoteProperty -Name Environment -Value $DeploymentTarget.Environment
        $targetObject | Add-Member -MemberType NoteProperty -Name Level -Value $sourceObject.Level
        $targetObject | Add-Member -MemberType NoteProperty -Name Ensure -Value $ensure
        
        Write-Output $targetObject
    }
}
     
        
